<?php
class PromosController extends AppController {
    public $helpers = array('Html', 'Form','Session');
    public $components = array('Session','Auth');
    public $uses=array('User','Order','Publicpage','Review','Promo');
    public function index(){
      $userid= $this->Auth->User('id');
      $this->set('title_for_layout', 'Пригласить пользователя');
      $this->set('user_name_sidebar', AppController::getUserName($userid));
      $promos=$this->Promo->findAllByEmm_userid($userid);
      for($i=0;$i<count($promos);$i++)
      {
        $use_userid=$promos[$i]['Promo']['use_userid'];
        if($use_userid==0)
        {
          $promos[$i]['Promo']['use_userName']='Не использован';
        }
        else
        {
          $promos[$i]['Promo']['use_userName']=AppController::getUserLogin($use_userid);
        }
      }
      $this->set('promos', $promos);
      if(AppController::isReseller($userid))
      {
        $this->set('isReseller', 1);
        $query="SELECT * FROM `balance_reseller` WHERE `userid`='{$userid}' LIMIT 1";
        $balance_reseller=$this->Promo->query($query);
        $this->set('balance_reseller', $balance_reseller);
      }
      else
      {
        $this->set('isReseller', 0);
      }
    }
    public function newcode()
    {
      $userid= $this->Auth->User('id');
      $userlogin=AppController::getUserLogin($userid);
      $promo=array();
      $promo['Promo']['emm_userid']=$userid;
      $promo['Promo']['code']=md5(uniqid($userlogin, true));
      $this->Promo->create();
      if ($this->Promo->save($promo)) {
        $this->Session->setFlash(__('Код создан успешно.'));
        $this->redirect(array('controller'=>'promos','action' => 'index'));
      }
    }
    public function pass()
    {
      $userid= $this->Auth->User('id');
      $this->set('title_for_layout', 'Активировать код');
      $this->set('user_name_sidebar', AppController::getUserName($userid));
      $promos=$this->Promo->findAllByUse_userid($userid);
      if(count($promos)>0)
      {
        $this->set('isPromoAlreadyUsed', 1);
      }
      else
      {
        $this->set('isPromoAlreadyUsed', 0);
      }
      if ($this->request->is('post') || $this->request->is('put')) {
        //Проверяем, что код еще не использован
        $code=$this->request->data['Promo']['code'];
        //Проверяем, вдруг это многоразовый код реселлера
        $promos_multiple=$this->Promo->findByCodeAndType($code,'multiple');
        if(count($promos_multiple)>0)
            $promos=$promos_multiple;
        else //если нет, то это одноразовый код, находим и его
            $promos=$this->Promo->findByCodeAndPassedAndType($code,0,'oneoff');

        if(count($promos)>0)   //код еще доступен
        {
          //проверяем, чтобы пользователь не пытался активировать свой собственный код
          $emm_userid=$promos['Promo']['emm_userid'];
          if($emm_userid!=$userid)  //пользователь активирует правильный код
          {
            $orders=$this->Order->findAllByUseridAndStatus($userid,2);
            if(count($orders)>0) //для активации кода у юзера должен быть хотя бы 1 оплаченный заказ
            {
                //Все ок, надо активировать код
                $id=$promos['Promo']['id'];
                $promos['Promo']['use_userid']= $userid;
                $promos['Promo']['passed']= 1;
                $promos['Promo']['time']=time();
                $this->Promo->id = $id;
                if ($this->Promo->save($promos)) {
                  //ОТПРАВКА МНЕ на ящик, что зарегистрирован новый код
                  $headers= "MIME-Version: 1.0\r\n";
                  $headers .= "Content-type: text/html; charset=utf-8\r\n";
                  $headers.="From: promo@radioheart.ru\r\n";
                  $message="Зарегистрирован новый промо код ID $id !";
                  mail("germes.07@bk.ru", "RadioHeart - качественный радио хостинг",$message,$headers);
                  //выслать уведомление эмитенту, что его реферал активировал код
                  $email=AppController::getUserEmail($emm_userid);
                  $message="Один из ваших рефералов активировал код. Зайдите в раздел 'Акции' и получите бонус";
                  //mail($email, "RadioHeart - качественный радио хостинг",$message,$headers);
                  $tmp=AppController::send_email($email, "RadioHeart - активация промо кода",$message,$headers);
                  $this->Session->setFlash(__('Ваш код был успешно активирован.'));
                  $this->redirect(array('controller'=>'promos','action' => 'getusebonus/'.$id));
                }
            }
            else
            {
              $this->Session->setFlash(__('Произошла ошибка, для активации кода у вас должен быть хотя бы 1 оплаченный заказ'));
              $this->redirect(array('controller'=>'promos','action' => 'pass'));
            }
          }
          else
          {
            $this->Session->setFlash(__('Произошла ошибка, вы не можете использовать свой собственный код.'));
            $this->redirect(array('controller'=>'promos','action' => 'pass'));
          }
        }
        else //код уже занят
        {
          $this->Session->setFlash(__('Произошла ошибка, данный код уже был использован.'));
          $this->redirect(array('controller'=>'promos','action' => 'pass'));
        }
        //print_r($this->request->data);
      }
    }
    public function getemmbonus($id)
    {
      $this->set('id',$id);
      $userid= $this->Auth->User('id');
      $this->set('title_for_layout', 'Получить бонус');
      $this->set('user_name_sidebar', AppController::getUserName($userid));
      if ($this->request->is('post') || $this->request->is('put')) {
        $orderid=$this->request->data['Promo']['orderid'];
        $promo=$this->Promo->findById($id);
        $emm_bonus=$promo['Promo']['emm_bonus'];
        if($orderid>0 and $emm_bonus==0)
        {
          //оплачиваем заказ
          $query="UPDATE `orders` SET `oplachenodo`=`oplachenodo`+604800 WHERE `id`='$orderid'";
          $this->Promo->query($query);
          //ставим заметку, что бонус использован
          $query="UPDATE `promos` SET `emm_bonus`='1' WHERE `id`='$id'";
          $this->Promo->query($query);
          $this->Session->setFlash(__('Бонус успешно зачислен.'));
          $this->redirect(array('controller'=>'promos','action' => 'index'));
        }
        else
        {
          $this->Session->setFlash(__('Произошла ошибка, вы уже получили бонус по этому коду.'));
          $this->redirect(array('controller'=>'promos','action' => 'index'));
        }
      }
      $orders=$this->Order->findAllByUseridAndStatus($userid,2);
      if($orders)
      {
        $streams=array();
        $orders_ids=array();
        foreach ($orders as $order)
        {
          $streams[]="http://".$order['Order']['serverip'].":".$order['Order']['port'].$order['Order']['mount'];
          $orders_ids[]=$order['Order']['id'];
        }
        $this->set('streams',$streams);
        $this->set('orders_ids',$orders_ids);
        $this->set('isuserhaveorders',1);
      }
      else
      {
        $this->set('isuserhaveorders',0);
      }
    }
    public function getusebonus($id)
    {
      $this->set('id',$id);
      $userid= $this->Auth->User('id');
      $this->set('title_for_layout', 'Получить бонус');
      $this->set('user_name_sidebar', AppController::getUserName($userid));
      if ($this->request->is('post') || $this->request->is('put')) {
        $orderid=$this->request->data['Promo']['orderid'];
        $promo=$this->Promo->findById($id);
        $use_bonus=$promo['Promo']['use_bonus'];
        $promo_type=$promo['Promo']['type'];
        if(($orderid>0 and $use_bonus==0) || ($orderid>0 and $promo_type=='multiple'))
        {
          //оплачиваем заказ
          $query="UPDATE `orders` SET `oplachenodo`=`oplachenodo`+604800 WHERE `id`='$orderid'";
          $this->Promo->query($query);
          //ставим заметку, что бонус использован
          $query="UPDATE `promos` SET `use_bonus`='1' WHERE `id`='$id'";
          $this->Promo->query($query);
          //Кухня по зачислени средств на баланс реселлеру
          if($promo_type=='multiple')
          {
            $order=$this->Order->findById($orderid);
            $order_cost=$order['Order']['cost'];
            //вычисляем процент
            $resellet_percent=$order_cost*0.15;
            //Определяем id реселлера из промо
            $reseller_id=$promo['Promo']['emm_userid'];
            //Зачисляем ему на баланс
            $now_time=time();
            $query="INSERT INTO `balance_reseller` (`id`, `userid`, `balance`, `time_add`,`time_out`)
                    VALUES (NULL, '{$reseller_id}','{$resellet_percent}', '{$now_time}','0')
                    ON DUPLICATE KEY UPDATE
                    `balance`=`balance`+{$resellet_percent}, `time_add`='{$now_time}';";
            $this->Promo->query($query);
            //Если это многоразовый код, то мы создаем еще одну запись в бд
            $promo['Promo']['id']=NULL;
            $this->Promo->create();
            $this->Promo->save($promo);
          }
          $this->Session->setFlash(__('Бонус успешно зачислен.'));
          $this->redirect(array('controller'=>'promos','action' => 'index'));
        }
        else
        {
          $this->Session->setFlash(__('Произошла ошибка, вы уже получили бонус по этому коду.'));
          $this->redirect(array('controller'=>'promos','action' => 'index'));
        }
      }
      $orders=$this->Order->findAllByUseridAndStatus($userid,2);
      if($orders)
      {
        $streams=array();
        $orders_ids=array();
        foreach ($orders as $order)
        {
          $streams[]="http://".$order['Order']['serverip'].":".$order['Order']['port'].$order['Order']['mount'];
          $orders_ids[]=$order['Order']['id'];
        }
        $this->set('streams',$streams);
        $this->set('orders_ids',$orders_ids);
        $this->set('isuserhaveorders',1);
      }
      else
      {
        $this->set('isuserhaveorders',0);
      }
    }
}


?>